BIN=./bin
SRC=./src
INC=./include
OBJ=./obj
TEST=./test

#提前所有源文件(即：*.c文件)和所有中间文件(即：*.o)
SOURCE=$(wildcard ${SRC}/*.c ${TEST}/*.c)
OBJECT=$(patsubst %.c,${OBJ}/%.o,$(notdir ${SOURCE}))

#设置最后目标文件
TARGET=main
BIN_TARGET=${BIN}/${TARGET}

CC=gcc
CFLAGS=-g -Wall -I${INC} -I${TEST} -std=c99

#用所有中间文件生成目的文件，规则中可以用 $^替换掉 ${OBJECT}
${BIN_TARGET}:${OBJECT}
	@mkdir -p $(BIN)
	$(CC) -o $@ ${OBJECT}

#生成各个中间文件
${OBJ}/%.o:${SRC}/%.c
	@mkdir -p $(OBJ)
	$(CC) $(CFLAGS) -o $@ -c $<

${OBJ}/%.o:${TEST}/%.c
	@mkdir -p $(OBJ)
	$(CC) $(CFLAGS) -o $@ -c $<

.PHONY:clean
clean:
	rm -rf $(BIN)
	rm -rf $(OBJ)